package com.shiyun.disaster_station.point.dao;

import cn.hutool.json.JSONObject;
import com.shiyun.disaster_station.interfaces.RootMapper;
import com.shiyun.disaster_station.point.bean.po.LinePointPo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 类 描 述: 点标识
 * 作   者: 史 云
 * 版   本: 1.0.0
 * 时   间: 2022年01月11日  10:00:00
 */
@Mapper
public interface LinePointMapper extends RootMapper<LinePointPo> {
    /**
     * 方法描述: 根据线路和里程查询相应的里程
     * 作    者: 史 云
     * 时    间: 2022年06月06日  10:46:28
     */
    @Select(" SELECT mileage," +
            " ST_Distance_Sphere(ST_GeomFromText(CONCAT('POINT(',lon,' ',lat,')')),ST_GeomFromText(CONCAT('POINT(',#{lon},' ',#{lat},')')))/1000 dis" +
            " FROM t_line_point WHERE line_id = #{lineId} ORDER BY dis LIMIT 1;")
    JSONObject getMileageByLoc(@Param("lineId")String lineId, @Param("lon")Double lon, @Param("lat")Double lat);
}
